package de.gameduell.framework.facebook {
	import de.gameduell.framework.facebook.reporting.ReportingEvent;
	import de.gameduell.facebook.service.gen.CatalogItem;
	import de.gameduell.framework.facebook.communication.FacebookData;
	import de.gameduell.framework.facebook.communication.ServiceLayerCommunication;

	import flash.events.Event;
	import flash.events.IEventDispatcher;

	public interface IFBBaseController extends IEventDispatcher {
		function get inventory():FBBaseInventory;
		function get catalog():FBBaseItemCatalog;
		function get gameState():FBBaseGameState;
		function get featureList():FeatureList;
		
		function startGame(gameType:String, width:int, height:int, divLayerXPos:int, divLayerYPos:int):void;
		function startJackpotGame(gameType:String, width:int, height:int, divLayerXPos:int, divLayerYPos:int):void;
		
		function fbDialogRemoved(dialogType:String = ""):void;
		function closeAllFBDialogs(event:Event = null):void;
		function becomeAFan(event:Event = null):void;
		function bookmarkApp(event:Event = null):void;
		function inviteFriends(event:Event = null):void;
		function setPermissions(permissionType:String):void;
		function openPaymentPopup(event:Event = null):void;
		function postScoreToWall(event:Event = null):void;
		function postRankToWall(aRankString:String):void;
		function get lastGameResult():GameResult;
		function getPageSettingsById(pageId:String):PageSettings;
		function loadAsset(aPageId:String):void;
		function registerScore(aResult:String):void;
		function parseApplicationSettings(aXML:XML, aBaseURL:String):void;
		function get communication():ServiceLayerCommunication;
		function get applicationData():FBBaseApplicationData;
		function get facebookData():FacebookData;
		function collectUserData(event:Event = null):void;
		function askForHelp(event:Event = null):void;
		function get gameIsRunning():Boolean;
		function get tutorialType():String;
		function get ingameType():String;
		function get trackingName():String;
		function buyItem(aItem:CatalogItem):void;
		function stopInitTime():void;
		function getJackPotGame(event:Event = null):void;
		function set baseUrl(anURL:String):void;
		function redirectTo(targetURL:String):void;
		function reportApplicationEvent(object:ReportingEvent):void;
	}
}
